/*
 * Copyright (c) 2015 4 12
 * Name:wuPeiJi
 * QQ:757671834
 */

package kali.wpj.kali.util;/*
 * Copyright (c) 2015 1 19
 * 	3 时 42 分34 秒
 * 	QQ:757671834
 * 	作者：吴培基
 */


import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.google.gson.reflect.TypeToken;

import java.lang.reflect.Type;
import java.util.List;

/**
 * Created by wpj on 2015/1/19.
 */
public class JSONTools {
    /**
     * @see将对象打包成为一个json字符串
     *
     * @param obj
     * @return json字符串
     */
public static String  toJson(Object obj){
    String jsonStr=null;
    try{
       GsonBuilder gsonBuilder=new GsonBuilder();
        Gson gson=gsonBuilder.create();
        jsonStr=gson.toJson(obj);
    }catch (Exception e){
        e.printStackTrace();
    }

    return jsonStr;

}

    /**
     * @see将一个list集合转换为json字符串
     * @param list 待转的list
     * @return json字符串
     */
public static String toJson(List<?> list){
    String jsonStr=null;
    try{
       GsonBuilder gsonBuilder=new GsonBuilder() ;
        Gson gson=gsonBuilder.create();
        jsonStr=gson.toJson(list);
    }
    catch(Exception e){
        e.printStackTrace();
    }
    return jsonStr;
}
    /**
     *
     * @see把json字符串转化为list集合
     * @param jsonStr 待转化的json字符串
     *  @param typeToken   new TypeToken<ArrayList<?>>() {} typeToken要转化的类类型
     *@return 集合
     *
     */

    public static List<?> fromJsonTolistGSON(String jsonStr,TypeToken typeToken){
        List<?> list = null;
        try {
            GsonBuilder gsonBuilder= new GsonBuilder();
            Gson gson = gsonBuilder.create();
            Type type = typeToken.getType();
            list = gson.fromJson(jsonStr,type);
        } catch (Exception e) {
            return null;
        }
        return list;

    }
    public static List<?> fromJsonTolist(String jsonStr,TypeToken typeToken){
        List<?> list = null;
        System.out.println("json"+jsonStr);
        jsonStr=jsonStr.replace("\\","");
        System.out.println("json1"+jsonStr);
//        try {
//          //  jsonStr = jsonStr.substring(1, jsonStr.lastIndexOf("\""));
//            System.out.println("json2"+jsonStr);
//        }catch (Exception e){
//            e.printStackTrace();
//            return null;
//        }
        try {
            GsonBuilder gsonBuilder= new GsonBuilder();
            Gson gson = gsonBuilder.create();
            Type type = typeToken.getType();
            list = gson.fromJson(jsonStr,type);
        } catch (Exception e) {
            e.printStackTrace();
            return null;
        }
        return list;

    }

    /**
     *
     * 描述：将json转化为对象.
     * @param json
     * @param clazz
     * @return
     */
    public static Object fromJson(String json,Class clazz) {
        Object obj = null;
        try {
//            System.out.println("json"+json);
//            json=json.replace("\\","");
//            System.out.println("json1"+json);
//            try {
//                json = json.substring(1, json.lastIndexOf("\""));
//            }catch (Exception e){
//                return null;
//            }
            System.out.println("传进来的JSON"+json);
            GsonBuilder gsonb = new GsonBuilder();
            Gson gson = gsonb.create();
            obj = gson.fromJson(json,clazz);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return obj;
    }

}
